/*
 * $Id$
 */

package org.sphx.api;

/**
 * Search result set.
 *
 * Includes retrieved matches array, status code and error/warning messages,
 * query stats, and per-word stats.
 */
public class SphinxResult
{
	/** Full-text field namess. */
	public String[]			fields;

	/** Attribute names. */
	public String[]			attrNames;

	/** Attribute types (refer to SPH_ATTR_xxx constants in SphinxClient). */
	public int[]			attrTypes;

	/** Retrieved matches. */
	public SphinxMatch[]	matches;

	/** Total matches in this result set. */
	public int				total;

	/** Total matches found in the index(es). */
	public int				totalFound;

	/** Elapsed time (as reported by searchd), in seconds. */
	public float			time;

	/** Per-word statistics. */
	public SphinxWordInfo[]	words;

	/** Warning message, if any. */
	public String			warning = null;

	/** Error message, if any. */
	public String			error = null;


	/** Query status (refer to SEARCHD_xxx constants in SphinxClient). */
	private int				status = -1;


	/** Trivial constructor, initializes an empty result set. */
	public SphinxResult()
	{
		this.attrNames = new String[0];
		this.matches = new SphinxMatch[0];;
		this.words = new SphinxWordInfo[0];
		this.fields = new String[0];
		this.attrTypes = new int[0];
	}

	/** Get query status. */
	public int getStatus()
	{
		return status;
	}

	/** Set query status (accessible from API package only). */
	void setStatus ( int status )
	{
		this.status = status;
	}

    
    /**
     * fields.
     * @return  the fields
     */
    
    public String[] getFields() {
        return fields;
    }

    
    /**
     * fields.
     * @param   fields    the fields to set
     */
    
    public void setFields(String[] fields) {
        this.fields = fields;
    }

    
    /**
     * attrNames.
     * @return  the attrNames
     */
    
    public String[] getAttrNames() {
        return attrNames;
    }

    
    /**
     * attrNames.
     * @param   attrNames    the attrNames to set
     */
    
    public void setAttrNames(String[] attrNames) {
        this.attrNames = attrNames;
    }

    
    /**
     * attrTypes.
     * @return  the attrTypes
     */
    
    public int[] getAttrTypes() {
        return attrTypes;
    }

    
    /**
     * attrTypes.
     * @param   attrTypes    the attrTypes to set
     */
    
    public void setAttrTypes(int[] attrTypes) {
        this.attrTypes = attrTypes;
    }

    
    /**
     * matches.
     * @return  the matches
     */
    
    public SphinxMatch[] getMatches() {
        return matches;
    }

    
    /**
     * matches.
     * @param   matches    the matches to set
     */
    
    public void setMatches(SphinxMatch[] matches) {
        this.matches = matches;
    }

    
    /**
     * total.
     * @return  the total
     */
    
    public int getTotal() {
        return total;
    }

    
    /**
     * total.
     * @param   total    the total to set
     */
    
    public void setTotal(int total) {
        this.total = total;
    }

    
    /**
     * totalFound.
     * @return  the totalFound
     */
    
    public int getTotalFound() {
        return totalFound;
    }

    
    /**
     * totalFound.
     * @param   totalFound    the totalFound to set
     */
    
    public void setTotalFound(int totalFound) {
        this.totalFound = totalFound;
    }

    
    /**
     * time.
     * @return  the time
     */
    
    public float getTime() {
        return time;
    }

    
    /**
     * time.
     * @param   time    the time to set
     */
    
    public void setTime(float time) {
        this.time = time;
    }

    
    /**
     * words.
     * @return  the words
     */
    
    public SphinxWordInfo[] getWords() {
        return words;
    }

    
    /**
     * words.
     * @param   words    the words to set
     */
    
    public void setWords(SphinxWordInfo[] words) {
        this.words = words;
    }

    
    /**
     * warning.
     * @return  the warning
     */
    
    public String getWarning() {
        return warning;
    }

    
    /**
     * warning.
     * @param   warning    the warning to set
     */
    
    public void setWarning(String warning) {
        this.warning = warning;
    }

    
    /**
     * error.
     * @return  the error
     */
    
    public String getError() {
        return error;
    }

    
    /**
     * error.
     * @param   error    the error to set
     */
    
    public void setError(String error) {
        this.error = error;
    }
}

/*
 * $Id$
 */
